<?php

namespace tch\core;

use tch\core\RouterInterface;

/**
 * 后台控制器父类
 */
abstract class AdminController extends Controller
{

    /**
     * 构造函数
     * @param RouterInterface $router
     */
    public function __construct(RouterInterface $router)
    {
        if (!defined('IN_ADMINCP')) {
            $this->error('需在后台管理入口中运行');
        }
        
        parent::__construct($router);
    }

    /**
     * 引入模版显示
     * @param string $tpl 模板文件名 不含后缀
     */
    protected function display($tpl = '')
    {
        global $_G;

        extract($this->vars);

        include TCH_CORE_ROOT . $this->getTplFile($tpl);
    }

    /**
     * 构造当前模块下指定模版文件名
     * @param string $tpl_name
     * @return string
     */
    protected function getTplFile($tpl_name = '')
    {
        return '/template/admin/' . $this->getControl() . '/'
                . ($tpl_name ? $tpl_name : $this->getAction()) . '.tpl.php';
    }

    /**
     * 操作错误跳转的快捷方法
     * @param string $message 错误信息
     * @param string $url 页面跳转地址
     * @param array $values 用于将message中的占位符替换成指定的值,键值对形式
     * @param string $extra message之外的附加内容,一般是javascript
     */
    protected function error($message, $url = '',  $values = array(), $extra = '')
    {
        $this->message($message, $url, 'error', $values, $extra, TRUE);
    }

    /**
     * 操作成功跳转的快捷方法
     * @param string $message 提示信息
     * @param string $url 页面跳转地址
     * @param array $values 用于将message中的占位符替换成指定的值,键值对形式
     * @param string $extra message之外的附加内容,一般是javascript
     */
    protected function success($message, $url = '', $values = array(), $extra = '')
    {
        $this->message($message, $url, 'succeed', $values, $extra, TRUE);
    }

    /**
     * 操作结果提示 包裹 cpmsg 函数
     * @param string $message 提示信息
     * @param string $url 页面跳转地址
     * @param string $type succeed|error|loadingform|loading|download|form|button|normal
     * @param array $values 用于将message中的占位符替换成指定的值,键值对形式
     * @param string $extra message之外的附加内容,一般是javascript
     * @param bool $halt 是否终止执行
     * @param string $cancelurl 提供取消按钮,点击后跳转到该地址
     */
    protected function message($message, $url = '', $type = '', $values = array(), $extra = '', $halt = TRUE, $cancelurl = '')
    {
        cpmsg($message, $url, $type, $values, $extra, $halt, $cancelurl);
    }

}
